BRIC Project
# clear workspace
##rm(list=ls())
getting the current WD
getwd()
[1] "/Users/Manu/Documents/GitHub/bric_ap_project"
changing the WD
setwd("/Users/Manu/Desktop/TUM_Master_Mgt_Technology/TUM_SS_21/Empirical Asset Pricing seminar/Seminar Thesis/BRIC_data")
The working directory was changed to /Users/Manu/Desktop/TUM_Master_Mgt_Technology/TUM_SS_21/Empirical Asset Pricing seminar/Seminar Thesis/BRIC_data inside a notebook chunk. The working directory will be reset when the chunk is finished running. Use the knitr root.dir option in the setup chunk to change the working directory for notebook chunks.
# loading libraries
library(data.table) # extension of the data.frame package. It is widely used for fast aggregation of large datasets, low latency add/update/remove of columns, quicker ordered joins, and a fast file reader.
library(dplyr) # data manipulation package
library(lubridate)
library(zoo) # methods for totally ordered indexed observations. It aims at performing calculations containing irregular time series of numeric vectors, matrices & factors
library(stats)
Data column descriptions (Worldscope): https://www.professors.wi.tum.de/fileadmin/w00bca/fm/Worldscope_Data_Definition_Guide_Issue_15.pdf
# loading R.data BRIC monthly
load("/Users/Manu/Desktop/TUM_Master_Mgt_Technology/TUM_SS_21/Empirical Asset Pricing seminar/Seminar Thesis/BRIC_data/BRIC_monthly.RData")
# loading R.data BRIC monthly
load("/Users/Manu/Desktop/TUM_Master_Mgt_Technology/TUM_SS_21/Empirical Asset Pricing seminar/Seminar Thesis/BRIC_data/BRIC_static.RData")
# loading R.data BRIC monthly
load("/Users/Manu/Desktop/TUM_Master_Mgt_Technology/TUM_SS_21/Empirical Asset Pricing seminar/Seminar Thesis/BRIC_data/BRIC_yearly.RData")
str(BRIC.monthly)
Classes ‘data.table’ and 'data.frame': 5525758 obs. of 13 variables:
$ Id : Factor w/ 96201 levels "130022","130038",..: 17 17 17 17 17 17 17 17 17 17 ...
$ country: chr "BRA" "BRA" "BRA" "BRA" ...
$ Date : Date, format: "1979-12-31" "1980-01-31" ...
$ MV : num NA NA NA NA NA NA NA NA NA NA ...
$ MV.USD : num NA NA NA NA NA NA NA NA NA NA ...
$ RET : num NA NA NA NA NA NA NA NA NA NA ...
$ RET.USD: num NA NA NA NA NA NA NA NA NA NA ...
$ PCH : num NA NA NA NA NA NA NA NA NA NA ...
$ PCH.USD: num NA NA NA NA NA NA NA NA NA NA ...
$ UP : num NA NA NA NA NA NA NA NA NA NA ...
$ NOSH : num NA NA NA NA NA NA NA NA NA NA ...
$ AF : num NA NA NA NA NA NA NA NA NA NA ...
$ ym : 'yearmon' num Dec 1979 Jan 1980 Feb 1980 Mar 1980 ...
- attr(*, ".internal.selfref")=<externalptr>
- attr(*, "sorted")= chr "Id"
str(BRIC.static)
Classes ‘data.table’ and 'data.frame': 11783 obs. of 41 variables:
$ GEOGN : chr "BRAZIL" "BRAZIL" "BRAZIL" "BRAZIL" ...
$ GEOLN : chr "BRAZIL" "BRAZIL" "BRAZIL" "BRAZIL" ...
$ NAME : chr "ACOS VILL ON DEAD - DELIST07/02/11" "CASA ANGLO ON 1000 DEAD - BRUPT.28/03/00" "CENTRAIS ELECTRICAS DE SANTA CATAR ON" "AMPLA ENERGIA E SERVICOS ON" ...
$ ECNAME : chr "ACOS VILLARES SA" "CASA ANGLO" "CENTRAIS ELETRICAS DE SANTA CATARINA SA" "AMPLA ENERGIA E SERVICOS SA" ...
$ ENAME : chr "ACOS VILL ON DEAD - DELIST07/02/11" "CASA ANGLO ON 1000 DEAD - BRUPT.28/03/00" "CENTRAIS ELECTRICAS DE SANTA CATAR ON" "AMPLA ENERGIA E SERVICOS ON" ...
$ PNAME : chr "ACOS VILL ON 1000" NA NA "AMPRA ENERG ON 1000" ...
$ TYPE : chr "EQ" "EQ" "EQ" "EQ" ...
$ MAJOR : chr "Y" "Y" "Y" "Y" ...
$ ISINID : chr "P" "P" "P" "P" ...
$ GGISN : chr "BR" "BR" "BR" "BR" ...
$ PCUR : chr "C" "C" "C" "C" ...
$ EXNAME : chr "Sao Paulo" "Sao Paulo" "Sao Paulo" "Sao Paulo" ...
$ ESTAT : chr "DEAD" "DEAD" "ACT." "ACT." ...
$ ICBSUC : int 1757 5373 7537 7535 3722 7537 2713 3355 8355 3577 ...
$ INDG : int 56 87 96 169 59 96 98 63 102 71 ...
$ INDM : chr "Iron & Steel" "Broadline Retailers" "Alt. Electricity" "Con. Electricity" ...
$ WC06011: int 5291 7020 8220 8220 4992 8592 1320 NA NA 4670 ...
$ WC07021: int 3312 5311 4911 4911 3965 4911 3721 NA NA 2011 ...
$ WC07022: int 3316 6141 4924 NA 2844 6719 4581 NA NA 2075 ...
$ WC07023: int 6719 6021 6719 NA 3421 NA 3728 NA NA 2015 ...
$ WC07024: int NA NA NA NA 3561 NA 8249 NA NA NA ...
$ WC07025: int NA NA NA NA 3262 NA NA NA NA NA ...
$ WC07026: int NA NA NA NA NA NA NA NA NA NA ...
$ WC07027: int NA NA NA NA NA NA NA NA NA NA ...
$ WC07028: int NA NA NA NA NA NA NA NA NA NA ...
$ WC07040: chr "1757" NA "7537" "7535" ...
$ WC07041: 'integer64' num 2.53e-314 2.64e-314 2.92e-314 2.92e-314 2.67e-314 ...
$ ISIN : chr "BRAVILACNOR1" "BRCABRACNOR3" "BRCLSCACNOR6" "BRCBEEACNOR3" ...
$ LOC : chr "BRAVIL3" "BRCABR3" "BRCLSC3" "BRCBEE3" ...
$ SECD : chr "2006341" "2177225" "B19PKR9" "2160902" ...
$ MNEM : chr "BR:AV3" "BR:CA3" "BR:CL3" "BR:CJ3" ...
$ A4NAME : chr NA NA NA NA ...
$ IBTKR : chr "@:@7AE" NA NA "@:@7C8" ...
$ BDATE : Date, format: "1990-02-05" "1991-01-30" ...
$ ESBDT : Date, format: NA NA ...
$ TIME : Date, format: "2011-02-04" "1999-01-28" ...
$ EDATE : Date, format: NA NA ...
$ WC18272: int 1944 1913 NA 1883 NA 19620611 19690819 NA NA NA ...
$ WC07015: Date, format: "2011-02-07" "2000-03-30" ...
$ Id : chr "130117" "130139" "130143" "130147" ...
$ country: chr "BRA" "BRA" "BRA" "BRA" ...
- attr(*, ".internal.selfref")=<externalptr>
- attr(*, "sorted")= chr "GEOGN"
str(BRIC.yearly)
Classes ‘data.table’ and 'data.frame': 459498 obs. of 105 variables:
$ Id : Factor w/ 96201 levels "130022","130038",..: 17 17 17 17 17 17 17 17 17 17 ...
$ country: chr "BRA" "BRA" "BRA" "BRA" ...
$ ICBSUC : int 1757 1757 1757 1757 1757 1757 1757 1757 1757 1757 ...
$ WC07021: int 3312 3312 3312 3312 3312 3312 3312 3312 3312 3312 ...
$ YEAR : int 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 ...
$ W05651 : num NA NA NA NA NA NA NA NA NA NA ...
$ W08006 : num NA NA NA NA NA NA NA NA NA NA ...
$ WC01001: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC01051: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01075: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01076: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01084: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01101: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01151: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01201: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01230: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01245: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01249: Factor w/ 523677 levels "209033","220729",..: NA NA NA NA NA NA NA 932 932 3653 ...
$ WC01250: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01251: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01255: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01266: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01271: num NA NA NA NA NA NA NA NA NA NA ...
$ WC01301: int NA NA NA NA NA NA NA 0 0 0 ...
$ WC01401: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01451: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01501: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01505: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01551: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC01651: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02001: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02005: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02051: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02099: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02101: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02140: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC02201: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC02214: int NA NA NA NA NA NA NA NA NA NA ...
$ WC02301: num NA NA NA NA NA NA NA 0 0 3 ...
$ WC02501: num NA NA NA NA NA NA NA 0 0 2 ...
$ WC02999: num NA NA NA NA NA NA NA 0 0 3 ...
$ WC03040: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03051: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03054: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03060: num NA NA NA NA NA NA NA NA NA NA ...
$ WC03063: num NA NA NA NA NA NA NA NA NA NA ...
$ WC03069: num NA NA NA NA NA NA NA NA NA NA ...
$ WC03101: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03151: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03251: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03255: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03262: num NA NA NA NA NA NA NA NA NA NA ...
$ WC03263: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03351: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03426: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03451: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03480: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03495: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC03501: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03995: num NA NA NA NA NA NA NA 0 0 1 ...
$ WC03999: num NA NA NA NA NA NA NA 0 0 3 ...
$ WC04055: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04100: int NA NA NA NA NA NA NA NA NA NA ...
$ WC04101: int NA NA NA NA NA NA NA NA 0 0 ...
$ WC04199: int NA NA NA NA NA NA NA NA 0 0 ...
$ WC04201: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC04251: num NA NA NA NA NA NA NA NA 0 0 ...
$ WC04551: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC04601: num NA NA NA NA NA NA NA NA 0 0 ...
$ WC04751: num NA NA NA NA NA NA NA NA 0 0 ...
$ WC04825: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04826: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04827: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04828: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04829: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04830: num NA NA NA NA NA NA NA NA NA NA ...
$ WC04860: num NA NA NA NA NA NA NA NA NA NA ...
$ WC05001: num NA NA NA NA NA NA NA NA NA NA ...
$ WC05101: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC05202: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC05301: num NA NA NA NA NA ...
$ WC05350: Factor w/ 4261 levels "","29.06.1999",..: NA NA NA NA NA NA NA 336 337 140 ...
$ WC05376: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC05401: int NA NA NA NA NA NA NA 0 0 0 ...
$ WC05476: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC05491: num NA NA NA NA NA NA NA 0 0 0 ...
$ WC05505: num NA NA NA NA NA NA NA NA NA NA ...
$ WC05508: num NA NA NA NA NA NA NA NA NA NA ...
$ WC05651: int NA NA NA NA NA NA NA NA NA NA ...
$ WC05905: Factor w/ 9289 levels "","01.03.2017",..: NA NA NA NA NA NA NA NA NA NA ...
$ WC06798: int NA NA NA NA NA NA NA NA NA NA ...
$ WC07011: int NA NA NA NA NA NA NA 5115 9961 9702 ...
$ WC07210: num NA NA NA NA NA NA NA NA NA NA ...
$ WC08001: num NA NA NA NA NA NA NA NA NA NA ...
$ WC08002: num NA NA NA NA NA NA NA NA NA NA ...
$ WC08004: num NA NA NA NA NA NA NA NA NA NA ...
$ WC08006: num NA NA NA NA NA NA NA NA NA NA ...
$ WC08256: num NA NA NA NA NA ...
$ WC08301: num NA NA NA NA NA ...
[list output truncated]
- attr(*, ".internal.selfref")=<externalptr>
- attr(*, "sorted")= chr "Id"
head(BRIC.yearly)
TO DO’s:
EDA
summary(BRIC.monthly$ym)
Min. 1st Qu. Median Mean 3rd Qu. Max.
1980 1990 1999 1999 2009 2019
# finding the number of NA values by column in the dataframe
BRIC.monthly %>% mutate_all(is.na) %>% summarize_all(sum)
NA
# regular correlation matrix of all (four) numeric attributes
cor(select(BRIC.static, where(is.numeric)))
the standard deviation is zero
ICBSUC INDG WC06011 WC07021 WC07022 WC07023 WC07024 WC07025 WC07026
ICBSUC 1 NA NA NA NA NA NA NA NA
INDG NA 1 NA NA NA NA NA NA NA
WC06011 NA NA 1 NA NA NA NA NA NA
WC07021 NA NA NA 1 NA NA NA NA NA
WC07022 NA NA NA NA 1 NA NA NA NA
WC07023 NA NA NA NA NA 1 NA NA NA
WC07024 NA NA NA NA NA NA 1 NA NA
WC07025 NA NA NA NA NA NA NA 1 NA
WC07026 NA NA NA NA NA NA NA NA 1
WC07027 NA NA NA NA NA NA NA NA NA
WC07028 NA NA NA NA NA NA NA NA NA
WC07041 NA NA NA NA NA NA NA NA NA
WC18272 NA NA NA NA NA NA NA NA NA
WC07027 WC07028 WC07041 WC18272
ICBSUC NA NA NA NA
INDG NA NA NA NA
WC06011 NA NA NA NA
WC07021 NA NA NA NA
WC07022 NA NA NA NA
WC07023 NA NA NA NA
WC07024 NA NA NA NA
WC07025 NA NA NA NA
WC07026 NA NA NA NA
WC07027 1 NA NA NA
WC07028 NA 1 NA NA
WC07041 NA NA 1 NA
WC18272 NA NA NA 1
# number of entries stocks per country
tabulate(as.factor(BRIC.monthly$country))
[1] 221368 1736707 3082737 484946
unique(BRIC.monthly$country)
[1] "BRA" "CHN" "RUS" "IND"
# industries
unique(BRIC.static$INDM)
[1] "Iron & Steel" "Broadline Retailers" "Alt. Electricity"
[4] "Con. Electricity" "Dur. Household Prod." "Aerospace"
[7] "Auto Parts" "Banks" "Food Products"
[10] "Automobiles" "Commodity Chemicals" "Paper"
[13] "Farm Fish Plantation" "Specialty Chemicals" "Industrial Machinery"
[16] "Fixed Line Telecom." "Divers. Industrials" "Alternative Fuels"
[19] "Unclassified" "Consumer Electronics" "Brewers"
[22] "Prop. & Casualty Ins." "Clothing & Accessory" "Specialty Finance"
[25] "Computer Hardware" "Comm. Vehicles,Trucks" "Real Estate Hold, Dev"
[28] "Exploration & Prod." "Nonferrous Metals" "Footwear"
[31] "Electrical Equipment" "Electronic Equipment" "Apparel Retailers"
[34] "Airlines" "Multiutilities" "Integrated Oil & Gas"
[37] "Unquoted equities" "Gas Distribution" "Building Mat.& Fix."
[40] "Healthcare Providers" "Home Construction" "Media Agencies"
[43] "Medical Equipment" "Railroads" "Full Line Insurance"
[46] "Recreational Services" "Food Retail,Wholesale" "Transport Services"
[49] "Mobile Telecom." "Hotels" "Recreational Products"
[52] "Furnishings" "Business Support Svs." "Drug Retailers"
[55] "Heavy Construction" "Water" "Tobacco"
[58] "Spec.Consumer Service" "Oil Equip. & Services" "Internet"
[61] "Biotechnology" "Ind. & Office REITs" "Diversified REITs"
[64] "Retail REITs" "Personal Products" "Software"
[67] "Financial Admin." "Real Estate Services" "Medical Supplies"
[70] "Consumer Finance" "Investment Services" "Pharmaceuticals"
[73] "Asset Managers" "Computer Services" "Industrial Suppliers"
[76] "Insurance Brokers" "Restaurants & Bars" "Specialty Retailers"
[79] "Travel & Tourism" "Residential REITs" "Coal"
[82] "Soft Drinks" "Renewable Energy Eq." "Mortgage REITs"
[85] "Specialty REITs" "Distillers & Vintners" "Containers & Package"
[88] "Telecom. Equipment" "Aluminum" "Nondur.Household Prod"
[91] "Marine Transportation" "Publishing" "Trucking"
[94] "Tires" "Home Improvement Ret." "Waste, Disposal Svs."
[97] "Semiconductors" "Broadcast & Entertain" "General Mining"
[100] "Delivery Services" "Forestry" "Diamonds & Gemstones"
[103] "Toys" "Pipelines" "Defense"
[106] "Plat.& Precious Metal" "Gold Mining" "Life Insurance"
[109] "Bus.Train & Employmnt" "Elec. Office Equip." "Mortgage Finance"
[112] "Electricity" "Investment Trusts" "Mutual Funds"
[115] "Reinsurance"
# Market Cap values
summary(BRIC.monthly$MV.USD)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
0.00e+00 3.00e+00 4.40e+01 1.14e+05 4.30e+02 2.90e+10 4035736
summary(BRIC.monthly$RET.USD)
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
-100 -8 0 2 8 903 4044505
# construct value-weighted market
VWM <-merge(Data_Excursus1[,-c("Date")],
BRIC.monthly,by="ym")
Error in vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, :
Join results in more than 2^31 rows (internal vecseq reached physical limit). Very likely misspecified join. Check for duplicate key values in i each of which join to the same group in x over and over again. If that's ok, try by=.EACHI to run j for each group to avoid the large allocation. Otherwise, please search for this error message in the FAQ, Wiki, Stack Overflow and data.table issue tracker for advice.